package model

import (
	"gorm.io/gorm"
	"micro-chat/config"
	"time"
)

type Message struct {
	Id         uint32         `gorm:"column:id;type:int UNSIGNED;primaryKey;not null;" json:"id"`
	FromUserId int32          `gorm:"column:from_user_id;type:int;comment:发送者ID;not null;" json:"from_user_id"`                                 // 发送者ID
	ToUserId   int32          `gorm:"column:to_user_id;type:int;comment:接收者ID;not null;" json:"to_user_id"`                                     // 接收者ID
	CreatedAt  time.Time      `gorm:"column:created_at;type:datetime(3);comment:发送时间;not null;default:CURRENT_TIMESTAMP(3);" json:"created_at"` // 发送时间
	Content    string         `gorm:"column:content;type:text;comment:文字内容;not null;" json:"content"`                                           // 文字内容
	MsgType    int8           `gorm:"column:msg_type;type:tinyint(1);comment:消息类型 1:文字类型;not null;" json:"msg_type"`                            // 消息类型 1:文字类型
	Status     int8           `gorm:"column:status;type:tinyint(1);comment:消息状态: 0:未读 1:已读 2:已发送(离线);not null;" json:"status"`                  // 消息状态: 0:未读 1:已读 2:已发送(离线)
	UpdatedAt  time.Time      `gorm:"column:updated_at;type:datetime(3);comment:更新时间;not null;default:CURRENT_TIMESTAMP(3);" json:"updated_at"` // 更新时间
	DeletedAt  gorm.DeletedAt `gorm:"column:deleted_at;type:datetime(3);default:NULL;" json:"deleted_at"`
}

func (m *Message) TablaName() string {
	return "message"
}

// 记录
func (m *Message) AddMessage() error {
	return config.DB.Create(&m).Error
}

// 查看
func (m *Message) FindMessage(from, to int32) (list []*Message, err error) {
	err = config.DB.
		Where("from_user_id = ? and to_user_id = ? ", from, to).
		Or("from_user_id = ? and to_user_id = ? ", to, from).
		Find(&list).Error
	return
}
